//
// Created by HhL on 2020/12/23.
//

#ifndef HHL_THREADPOOL_C_THREAD_POOL_H
#define HHL_THREADPOOL_C_THREAD_POOL_H

#include <jni.h>
#include <pthread.h>


typedef struct thread_pool_t {
    /* 互斥锁，用于在多线程环境下操作本结构体保证同步性 */
    pthread_mutex_t lock;

    /* 所有工作线程的ID的集合 */
    pthread_t *worker_tids;

    /* 线程池的最小线程数 */
    jint thr_min_size;

    /* 线程池的最大线程数 */
    jint thr_max_size;

    /* 线程池的存活线程数 */
    jint thr_live_size;

    /* 线程池的繁忙线程数 */
    jint thr_busy_size;
} thread_pool, *pthread_pool;

/**=====================================
 * 线程池相关操作函数
 ======================================*/
jint thread_pool_init(JNIEnv *jEnv, jint minSize, jint maxSize);

void thread_pool_destroy();

void thread_pool_free();

void thread_pool_print(const char *msg);

#endif //HHL_THREADPOOL_C_THREAD_POOL_H
